package com.sxj.corejava.code03_模板模式;

import java.util.Arrays;

/**
 * @author 石小俊
 * @date 2023年12月2023/12/5日 18:53
 * 定义一个数组的排序方法,根据实际传递的数组类型不同,排序的规则也不同
 * 定义时只定义排序规则,不做具体实现。在调用时,使用匿名内部类进行具体的实现
 * 例如:如果传递的参数是一个int数组,则根据数值的大小进行降序排序
 * 如果传递的参数是一个字符串数组,则根据字符串的长度进行升序排序
 */
public class Test02 {

    public static void main(String[] args) {
        Integer[] arr = {3,1,2,6,10,12,13,17,8,5};
        // 在此处,调用方法时实现对应接口方法
        SortTemplate.sort(arr, new SortComparator<Integer>() {
            @Override
            public int compareTo(Integer t1, Integer t2) {
                return t2 - t1;
            }
        });
        System.out.println(Arrays.toString(arr));
        String[] names = {"admin","jack","tom","aa"};
        SortTemplate.sort(names, new SortComparator<String>() {
            @Override
            public int compareTo(String t1, String t2) {
                return t1.length() - t2.length();
            }
        });
        System.out.println(Arrays.toString(names));
    }

}
